
<!DOCTYPE html>
<html>
  <head>
    <title>Beego入门教程之三——参数配置</title>
    <meta charset='utf-8'>
    <script src='static/slides.js'></script>
  </head>

  <body style='display: none'>

    <section class='slides layout-widescreen'>
      
      <article>
        <h1>Beego入门教程之三——参数配置</h1>
        <h3>一个快速开发 Go 应用的 HTTP 框架</h3>
        <h3>25 May 2014</h3>
        
          <div class="presenter">
            
  
  <p>
    astaxie
  </p>
  

          </div>
        
      </article>
      
  
  
      <article>
      
        <h3>大纲</h3>
        
  <ul>
  
    <li>beego为什么需要默认参数</li>
  
    <li>beego的默认参数</li>
  
    <li>app.conf的作用</li>
  
    <li>beego的自定义参数</li>
  
  </ul>

      
      </article>
  
  
  
      <article>
      
        <h3>beego为什么需要默认参数</h3>
        
  
  <p>
    让开发来的更快速，无需配置的跑起来
  </p>
  

  
  <p>
    beego的配置就和你第一次安装PHP的时候一样，配置可以运行的PHP环境
  </p>
  

  
  <p>
    例如是否开启session，监听什么端口
  </p>
  

      
      </article>
  
  
  
      <article>
      
        <h3>beego的默认参数</h3>
        
  <ul>
  
    <li>AppName</li>
  
  </ul>

  
  <div class="code"><pre>应用名称，默认是 beego。通过bee new创建的是创建的项目名。</pre></div>
  

  <ul>
  
    <li>AppPath</li>
  
  </ul>

  
  <div class="code"><pre>当前应用的路径，默认会通过设置os.Args[0]获得执行的命令的第一个参数，所以你在使用 supervisor 管理进程的时候记得采用全路径启动。</pre></div>
  

  <ul>
  
    <li>AppConfigPath</li>
  
  </ul>

  
  <div class="code"><pre>配置文件所在的路径，默认是应用程序对应的目录下的 conf/app.conf，用户可以修改该值配置自己的配置文件。</pre></div>
  

  <ul>
  
    <li>EnableHttpListen</li>
  
  </ul>

  
  <div class="code"><pre>是否启用HTTP监听，默认是true</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>beego的默认参数</h3>
        
  <ul>
  
    <li>HttpAddr</li>
  
  </ul>

  
  <div class="code"><pre>应用监听地址，默认为空，监听所有的网卡 IP。</pre></div>
  

  <ul>
  
    <li>HttpPort</li>
  
  </ul>

  
  <div class="code"><pre>应用监听端口，默认为 8080。</pre></div>
  

  <ul>
  
    <li>EnableHttpTLS</li>
  
  </ul>

  
  <div class="code"><pre>是否启用 HTTPS，默认是关闭。</pre></div>
  

  <ul>
  
    <li>HttpsPort</li>
  
  </ul>

  
  <div class="code"><pre>应用监听https端口，默认为 10443。</pre></div>
  

  <ul>
  
    <li>HttpCertFile</li>
  
  </ul>

  
  <div class="code"><pre>开启 HTTPS 之后，certfile 的路径。</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>beego的默认参数</h3>
        
  <ul>
  
    <li>HttpKeyFile</li>
  
  </ul>

  
  <div class="code"><pre>开启 HTTPS 之后，keyfile 的路径。</pre></div>
  

  <ul>
  
    <li>HttpServerTimeOut</li>
  
  </ul>

  
  <div class="code"><pre>设置 HTTP 的超时时间，默认是 0，不超时。</pre></div>
  

  <ul>
  
    <li>RunMode</li>
  
  </ul>

  
  <div class="code"><pre>应用的模式，默认是 dev，为开发模式，在开发模式下出错会提示友好的出错页面，如前面错误描述中所述。</pre></div>
  

  <ul>
  
    <li>AutoRender</li>
  
  </ul>

  
  <div class="code"><pre>是否模板自动渲染，默认值为 true，对于 API 类型的应用，应用需要把该选项设置为 false，不需要渲染模板。</pre></div>
  

  <ul>
  
    <li>RecoverPanic</li>
  
  </ul>

  
  <div class="code"><pre>是否异常恢复，默认值为 true，即当应用出现异常的情况，通过 recover 恢复回来，而不会导致应用异常退出。</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>beego的默认参数</h3>
        
  <ul>
  
    <li>ViewsPath</li>
  
  </ul>

  
  <div class="code"><pre>模板路径，默认值是 views。</pre></div>
  

  <ul>
  
    <li>SessionOn</li>
  
  </ul>

  
  <div class="code"><pre>session 是否开启，默认是 false。</pre></div>
  

  <ul>
  
    <li>SessionProvider</li>
  
  </ul>

  
  <div class="code"><pre>session 的引擎，默认是 memory。</pre></div>
  

  <ul>
  
    <li>SessionName</li>
  
  </ul>

  
  <div class="code"><pre>存在客户端的 cookie 名称，默认值是 beegosessionID。</pre></div>
  

  <ul>
  
    <li>SessionGCMaxLifetime</li>
  
  </ul>

  
  <div class="code"><pre>session 过期时间，默认值是 3600 秒。</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>beego的默认参数</h3>
        
  <ul>
  
    <li>SessionSavePath</li>
  
  </ul>

  
  <div class="code"><pre>session 保存路径，默认是空。</pre></div>
  

  <ul>
  
    <li>SessionHashFunc</li>
  
  </ul>

  
  <div class="code"><pre>sessionID 生成函数，默认是 sha1。</pre></div>
  

  <ul>
  
    <li>SessionHashKey</li>
  
  </ul>

  
  <div class="code"><pre>session hash 的 key。</pre></div>
  

  <ul>
  
    <li>SessionCookieLifeTime</li>
  
  </ul>

  
  <div class="code"><pre>session 默认存在客户端的 cookie 的时间，默认值是 3600 秒。</pre></div>
  

  <ul>
  
    <li>UseFcgi</li>
  
  </ul>

  
  <div class="code"><pre>是否启用 fastcgi，默认是 false。</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>beego的默认参数</h3>
        
  <ul>
  
    <li>MaxMemory</li>
  
  </ul>

  
  <div class="code"><pre>文件上传默认内存缓存大小，默认值是 1 &lt;&lt; 26(64M)。</pre></div>
  

  <ul>
  
    <li>EnableGzip</li>
  
  </ul>

  
  <div class="code"><pre>是否开启 gzip 支持，默认为 false 不支持 gzip，一旦开启了 gzip，那么在模板输出的内容会进行 gzip 或者 zlib 压缩，根据用户的 Accept-Encoding 来判断。</pre></div>
  

  <ul>
  
    <li>DirectoryIndex</li>
  
  </ul>

  
  <div class="code"><pre>是否开启静态目录的列表显示，默认不显示目录，返回 403 错误。</pre></div>
  

  <ul>
  
    <li>BeegoServerName</li>
  
  </ul>

  
  <div class="code"><pre>beego 服务器默认在请求的时候输出 server 为 beego。</pre></div>
  

  <ul>
  
    <li>EnableAdmin</li>
  
  </ul>

  
  <div class="code"><pre>是否开启进程内监控模块，默认关闭。</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>beego的默认参数</h3>
        
  <ul>
  
    <li>AdminHttpAddr</li>
  
  </ul>

  
  <div class="code"><pre>监控程序监听的地址，默认值是 localhost。</pre></div>
  

  <ul>
  
    <li>AdminHttpPort</li>
  
  </ul>

  
  <div class="code"><pre>监控程序监听的端口，默认值是 8088。</pre></div>
  

  <ul>
  
    <li>TemplateLeft</li>
  
  </ul>

  
  <div class="code"><pre>模板左标签，默认值是{{。</pre></div>
  

  <ul>
  
    <li>TemplateRight</li>
  
  </ul>

  
  <div class="code"><pre>模板右标签，默认值是}}。</pre></div>
  

  <ul>
  
    <li>ErrorsShow</li>
  
  </ul>

  
  <div class="code"><pre>是否显示错误，默认显示错误信息。</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>beego的默认参数</h3>
        
  <ul>
  
    <li>XSRFKEY</li>
  
  </ul>

  
  <div class="code"><pre>XSRF 的 key 信息，默认值是 beegoxsrf。</pre></div>
  

  <ul>
  
    <li>XSRFExpire</li>
  
  </ul>

  
  <div class="code"><pre>XSRF 过期时间，默认值是 0。</pre></div>
  

  <ul>
  
    <li>FlashName</li>
  
  </ul>

  
  <div class="code"><pre>Flash数据设置时Cookie的名称，默认是BEEGO_FLASH</pre></div>
  

  <ul>
  
    <li>FlashSeperator</li>
  
  </ul>

  
  <div class="code"><pre>Flash数据的分隔符，默认是BEEGOFLASH</pre></div>
  

  <ul>
  
    <li>StaticDir</li>
  
  </ul>

  
  <div class="code"><pre>静态文件目录设置，默认是static</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>app.conf的说明</h3>
        
  
  <p>
    app.conf里面定义的是上面这些默认值的可覆盖值，app.conf是ini解析
  </p>
  

  
  <div class="code"><pre>[section]
key = value

beego.AppConfig.Bool(&#34;key&#34;)</pre></div>
  

  <ul>
  
    <li>Set(key, val string) error   </li>
  
    <li>String(key string) string  </li>
  
    <li>Strings(key string) []string</li>
  
    <li>Int(key string) (int, error)</li>
  
    <li>Int64(key string) (int64, error)</li>
  
    <li>Bool(key string) (bool, error)</li>
  
    <li>Float(key string) (float64, error)	</li>
  
  </ul>

      
      </article>
  
  
  
      <article>
      
        <h3>beego的自定义参数</h3>
        
  
  <p>
    如下所示的配置文件
  </p>
  

  
  <div class="code"><pre>;comment one
#comment two
appname = beeapi
httpport = 8080
mysqlport = 3600
PI = 3.1415976
runmode = &#34;dev&#34;
autorender = false
copyrequestbody = true
[demo]
key1=&#34;asta&#34;
key2 = &#34;xie&#34;
CaseInsensitive = true
peers = one;two;three</pre></div>
  

      
      </article>
  
  
  
      <article>
      
        <h3>自定义配置的读取</h3>
        
  <ul>
  
    <li>beego.AppConfig.Bool(&#34;autorender&#34;)</li>
  
    <li>beego.AppConfig.Float(&#34;PI&#34;)</li>
  
    <li>beego.AppConfig.Int(&#34;mysqlport&#34;)</li>
  
    <li>beego.AppConfig.String(&#34;appname&#34;)</li>
  
    <li>beego.AppConfig.String(&#34;demo::key1&#34;)</li>
  
    <li>beego.AppConfig.Bool(&#34;demo::CaseInsensitive&#34;)  </li>
  
    <li>beego.AppConfig.Strings(&#34;demo::peers&#34;)    [one two three]</li>
  
  </ul>

      
      </article>
  
  

      <article>
        <h3>Thank you</h1>
        
          <div class="presenter">
            
  
  <p>
    astaxie
  </p>
  
<p class="link"><a href="http://github.com/astaxie" target="_blank">http://github.com/astaxie</a></p><p class="link"><a href="http://weibo.com/533452688" target="_blank">http://weibo.com/533452688</a></p><p class="link"><a href="http://twitter.com/astaxie" target="_blank">http://twitter.com/astaxie</a></p>
          </div>
        
      </article>

  </body>
  
</html>
